

import { createSlice } from "@reduxjs/toolkit";
// createSlice是个方法调用它传入配置对象,返回ruducer和action
const countSlice=createSlice({
  // action中的type 的命名空间   以什么开头前缀
name:"counter",
// reducer提供的初始值
initialState:{
  count :0
},
// 这是reducer的配置,会根据这个配置生成真正的reducer
// 这里定义方法 随便命名可以定义多个  (厨师做什么事情嘛)type switch比对方法做什么事情
reducers:{
  // prev原始值上一次的值,就相当于配置中的initialState配置
increment(prev,action){
  // console.log(prev,action,"reducer中的参数")
  prev.count+=action.payload
},
decrement(a,b){
a.count-=b.payload
}
}

})


//createSilce根据配置内容把对应的action函数也创建出来了,把所有的action保存在countSlice的actions对象上
/* const increment = (data) => {
  return {
    type: "counter/increment",
    data
  }
}
const decrement = (data) => {
  return {
    type: "counter/decrement",
    data
  }
} */

/* //createSilce通过传递进来的配置内容 可以得到的reducer函数 并放在了countSlice.reducer属性上
function reducer(pre,action){
  const {type,data} = action;
  switch(type){
    case "counter/increment":
      console.log(a, b, "reducer中的参数打印");
    case "counter/decrement":
      console.log(a, b, "reducer中的参数打印");
  }
} */

// 通过createSlice创建的对象上有一个reducer属性,直接得到的就是当前的reducer函数,可以直接暴露出去给store使用
export default  countSlice.reducer

export const {
  increment,
  decrement
}=countSlice.actions